package com.xc.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @author xiongcan
 * @version 1.0
 * @date 2018/4/2 下午5:45
 */
@Slf4j
public class HttpRequest {

    /**
     * Get Request
     *
     * @return
     * @throws Exception
     */
    public static String doGet(String url,String params) throws Exception {
        URL localURL = new URL(url + params);
        URLConnection connection = localURL.openConnection();
        HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
        httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
        httpURLConnection.setRequestProperty("Content-Type", "application/text");
        InputStream inputStream = null;
        InputStreamReader inputStreamReader = null;
        BufferedReader reader = null;
        StringBuffer resultBuffer = new StringBuffer();
        String tempLine = null;

        if (httpURLConnection.getResponseCode() >= 300) {
            throw new Exception(
                    "HTTP Request is not success, Response code is "
                            + httpURLConnection.getResponseCode());
        }
        try {
            inputStream = httpURLConnection.getInputStream();
            inputStreamReader = new InputStreamReader(inputStream);
            reader = new BufferedReader(inputStreamReader);

            while ((tempLine = reader.readLine()) != null) {
                resultBuffer.append(tempLine);
            }
        } finally {
            if (reader != null) {
                reader.close();
            }
            if (inputStreamReader != null) {
                inputStreamReader.close();
            }
            if (inputStream != null) {
                inputStream.close();
            }
        }
        return resultBuffer.toString();
    }


    /**
     * Http post
     * @param url post请求url
     * @param params 参数
     * @return
     * @throws Exception
     */
    public static String doPost(String url, Map<String, String> params) throws Exception {
        HttpPost httpPost=new HttpPost(url);

        HttpClient httpclient=new DefaultHttpClient();
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        if(params!=null){
            BasicNameValuePair bnvp=null;
            for (Map.Entry<String, String> p : params.entrySet()) {
                bnvp=new BasicNameValuePair(p.getKey(), p.getValue());
            }
        }
        httpPost.setEntity(new UrlEncodedFormEntity(nvps));
        HttpResponse response = httpclient.execute(httpPost);
        HttpEntity respEntity = response.getEntity();//获得返回数据
        String text = EntityUtils.toString(respEntity, "UTF-8");
//        JSONPObject obj = (JSONPObject) JSONPObject.parse(text);
        httpclient.getConnectionManager().shutdown();
//        return obj.toJSONString();
        return text;
    }



    public static void main(String[] args) {

        String url = "";
        String ips = "183.32.208.138";

        String getret = "";
        try {
            getret = HttpRequest.doGet(url,ips);
        }catch (Exception e){
            e.printStackTrace();
        }
        log.info("get ret : " + getret);


//        String posturl = "http://ip.taobao.com/service/getIpInfo.php";
//        Map<String, String> paramMaps = Maps.newHashMap();
//        paramMaps.put("ip","183.32.208.138");
//        String postret = "";
//        try {
//            postret = HttpRequest.doPost(posturl , paramMaps);
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//        log.info("post ret : " + postret);

    }


}
